#include "Infomation.h"

Plates::Plates() {
    m_plates.clear();
}

Plates::~Plates() {
    if (!m_plates.empty()) {
        for (auto it = m_plates.begin(); it != m_plates.end();) {
            delete it->second;        // 释放info空间
            it = m_plates.erase(it);  // 移除元素，并更新迭代器
        }
    }
    m_plates.clear();
}

bool Plates::find_plate(const std::string& str) {
    if (m_plates.find(str) == m_plates.end()) {
        // 不存在
        return false;
    }
    return true;
}

void Plates::push_plate(Info* info) {
    if (!find_plate(info->name)) {
        m_plates.insert({info->name, info});
    }
}

Info* Plates::pop_plate(std::string& str) {
    if (find_plate(str)) {
        Info* info = m_plates[str];
        m_plates.erase(str);
        return info;
    }
    return NULL;
}

Info* Plates::operator[](const std::string& str) {
    if (find_plate(str)) {
        return m_plates[str];
    }
    return NULL;
}

QString Plates::getCurrentTime() {
    QDateTime time = QDateTime::currentDateTime();
    return time.toString("yyyy-M-dd HH:mm:ss");
}
